package GreedyAlgorithm;

public class Code02 {
    /*柠檬水找零 https://leetcode-cn.com/leetbook/read/greedy/rvmuse/*/
    public boolean lemonadeChange(int[] bills) {// 贪心算法  [5,5,10,10,20]  !注意 题中并没有让你进行排序，也就是本可以的方案顺序不对就不行
        // 我们要计算当前手中有的5 元和10 元的数量
        int five = 0, ten = 0;
        for (int bill : bills) {
            if (bill == 5)
                five++; // 五元则直接收钱
            if (bill == 10){
                if (five < 1)
                    return false; // 找不开，失败
                ten++;
                five--;
            }
            if (bill == 20){
                if (five >= 1 && ten >= 1){
                    five--;
                    ten--;
                }else if (five >= 3)
                    five-=3;
                else
                    return false;// 10 + 5 元的方案不行，并且3*5元的方案不行，只能是含泪拒绝
            }
        }

        return true;
    }

    public static void main(String[] args) {
        Code02 code02 = new Code02();
        System.out.println("code02.lemonadeChange(new int[]{5,5,10,10,20}) = " + code02.lemonadeChange(new int[]{5, 5, 10, 10, 20}));
        System.out.println("code02.lemonadeChange(new int[]{5,5,5,10,20}) = " + code02.lemonadeChange(new int[]{5, 5, 5, 10, 20}));
    }
}
